
import React, { Component } from 'react';
import RegisterView  from '../view/RegisterView'
import LoginView  from '../view/LoginView'
import UsersData from '../view/UsersData'
import DCData from '../view/DCData'
import DCView  from '../view/home'
import DCAction from '../actions/DCAction';
import dcalt from '../alt/DCAlt'
import DCStore from '../stores/DCStore'
import LoadingView from './ActivityIndicatorView'
import RootView from './RootView'

import {
   AppRegistry,
   Navigator,
   View
} from 'react-native';
window.ALT = new dcalt();
window.STORE = new dcalt();

class Nav extends Component {
  constructor(props){
      super();
      this.state = {
        isShowHud: ALT.stores.DCStore.getState().isShowHud,
      };
  };
  componentDidMount(){
    ALT.stores.DCStore.listen(this.onChange);
  };
  componentWillUnmount() {
    ALT.stores.DCStore.unlisten(this.onChange);
    this._listeners && this._listeners.forEach(listener => listener.remove());
  };
  onChange=()=> {
    this.setState({isShowHud: ALT.stores.DCStore.getState().isShowHud});
  };

	render(){

		return(

      <View style={{flex: 1,backgroundColor:'white'}}>
			   <Navigator
          		initialRoute={{ title: 'first View', index: 0 }}
          		renderScene={(route, navigator) =>{
          		window.nav = navigator
          	if (route.title =='Register') {
          		  return  <RegisterView/>
          	}else if (route.title =='Login') {
                return  <DCView/>
            }else if (route.title == 'UsersData') {
                return <UsersData/>
            }else if (route.title == 'DCData') {
                return <DCData/>
            }else if (route.title == 'Root') {
                return <LoginView/>

            };

              return <RootView/>
                     	
          }      
         }/>
         
        <LoadingView isShowHud = {this.state.isShowHud}/>
      </View>
		)
	}
}


module.exports = Nav

// 'use strict';

// import React, { Component }from 'react';
// import {
//   AlertIOS,
//   PushNotificationIOS,
//   StyleSheet,
//   Text,
//   TouchableHighlight,
//   View,
// } from 'react-native';

// class Button extends Component{
//   render() {
//     return (
//       <TouchableHighlight
//         underlayColor={'white'}
//         style={styles.button}
//         onPress={this.props.onPress}>
//         <Text style={styles.buttonLabel}>
//           {this.props.label}
//         </Text>
//       </TouchableHighlight>
//     );
//   }
// };

// class NotificationExample extends Component {
//   componentWillMount() {
//     // Add listener for push notifications
//     PushNotificationIOS.addEventListener('notification', this._onNotification);
//     // Add listener for local notifications
//     PushNotificationIOS.addEventListener('localNotification', this._onLocalNotification);
//   }

//   componentWillUnmount() {
//     // Remove listener for push notifications
//     PushNotificationIOS.removeEventListener('notification', this._onNotification);
//     // Remove listener for local notifications
//     PushNotificationIOS.removeEventListener('localNotification', this._onLocalNotification);
//   }

//   render() {
//     return (
//       <View>
//         <Button
//           onPress={this._sendNotification}
//           label="Send fake notification"/>

//         <Button
//           onPress={this._sendLocalNotification}
//           label="Send fake local notification"/>
//       </View>
//     );
//   }

//   _sendNotification() {
//     require('RCTDeviceEventEmitter').emit('remoteNotificationReceived', {
//       aps: {
//         alert: 'Sample notification',
//         badge: '+1',
//         sound: 'default',
//         category: 'REACT_NATIVE'
//       },
//     });
//   }

//   _sendLocalNotification() {
//     require('RCTDeviceEventEmitter').emit('localNotificationReceived', {
//       aps: {
//         alert: 'Sample local notification',
//         badge: '+1',
//         sound: 'default',
//         category: 'REACT_NATIVE'
//       },
//     });
//   }

//   _onNotification(notification) {
//     AlertIOS.alert(
//       'Push Notification Received',
//       'Alert message: ' + notification.getMessage(),
//       [{
//         text: 'Dismiss',
//         onPress: null,
//       }]
//     );
//   }

//   _onLocalNotification(notification){
//     AlertIOS.alert(
//       'Local Notification Received',
//       'Alert message: ' + notification.getMessage(),
//       [{
//         text: 'Dismiss',
//         onPress: null,
//       }]
//     );
//   }
// }

// class NotificationPermissionExample extends Component {
//   state: any;

//   constructor(props) {
//     super(props);
//     this.state = {permissions: null};
//   }

//   render() {
//     return (
//       <View>
//         <Button
//           onPress={this._showPermissions.bind(this)}
//           label="Show enabled permissions"/>
//         <Text>
//           {JSON.stringify(this.state.permissions)}
//         </Text>
//       </View>
//     );
//   }

//   _showPermissions() {
//     PushNotificationIOS.checkPermissions((permissions) => {
//       this.setState({permissions});
//     });
//   }
// }

// var styles = StyleSheet.create({
//   button: {
//     padding: 10,
//     alignItems: 'center',
//     justifyContent: 'center',
//   },
//   buttonLabel: {
//     color: 'blue',
//   },
// });



// exports.title = 'PushNotificationIOS';
// exports.description = 'Apple PushNotification and badge value';
// exports.examples = [
// {
//   title: 'Badge Number',
//   render(): ReactElement<any> {
//     PushNotificationIOS.requestPermissions();

//     return (
//       <View>
//         <Button
//           onPress={() => PushNotificationIOS.setApplicationIconBadgeNumber(42)}
//           label="Set app's icon badge to 42"/>
//         <Button
//           onPress={() => PushNotificationIOS.setApplicationIconBadgeNumber(0)}
//           label="Clear app's icon badge"/>
//       </View>
//     );
//   },
// },
// {
//   title: 'Push Notifications',
//   render(): ReactElement<any> {
//     return <NotificationExample />;
//   }
// },
// {
//   title: 'Notifications Permissions',
//   render(): ReactElement<any> {
//     return <NotificationPermissionExample />;
//   }
// }];




